/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package parserxml;

/**
 *
 * @author Jacob
 */
public class GeneradorScriptEsquema {

//    public static void imprimirTablas() {
//
//    Collection<TablaSQL> tablas = listaTablas.values();
//    Iterator<TablaSQL> iterTabla = tablas.iterator();
//
//    while (iterTabla.hasNext()) {
//      TablaSQL tabla = iterTabla.next();
//      System.out.println(tabla.getNombre() + ":");
//      Iterator columnas = tabla.getAllAtributos();
//      while (columnas.hasNext()) {
//        Atributo c = (Atributo) columnas.next();
//        System.out.println("    " + c.getNombre());
//      }
//    }
//  }
//
//  /**
//   * @return Escribe en un archivo de nombre Schema.sql, un script
//   * que genera todas las tablas guardadas en listaTablas (global).
//   * @throws IOException
//   */
//  public static void generarScript() throws IOException {
//
//    Writer out = new FileWriter("Schema.sql");
//
//    Collection<TablaSQL> tablas = listaTablas.values();
//    Iterator<TablaSQL> iterTabla = tablas.iterator();
//
//    while (iterTabla.hasNext()) {
//      TablaSQL tabla = iterTabla.next();
//      out.write("CREATE TABLE " + tabla.getNombre() + "(\n");
//
//      Iterator<Atributo> iterAtributo = tabla.getAllAtributos();
//      while (iterAtributo.hasNext()) {
//        Atributo attr = iterAtributo.next();
//
//        // si el atributo es auto-increment, entonces su nombre termina
//        // por '_AI'
//        if (attr.getNombre().endsWith("_AI")) {
//          out.write("\t" + attr.getNombre() + " int NOT NULL AUTO_INCREMENT");
//        } // si el atributo no es auto-increment se hace lo usual
//        else {
//          out.write("\t" + attr.getNombre() + " VARCHAR(100)");
//          if (!attr.getIsNull()) {
//            out.write(" NOT NULL");
//          }
//        }
//        // termina la linea del atributo con una coma y salto de linea
//        out.write(",\n");
//
//        // si el atributo apunta a otra tabla entonces se construye
//        // y agrega la restriccion al script
//        if (attr.getClaveForanea() != null) {
//          out.write(processIDRefs(attr.getClaveForanea()));
//        }
//      }
//      // al final de la tabla se coloca la restriccion de la
//      // clave primaria
//      if (!tabla.getClavePK().isEmpty()) {
//        out.write("\tPRIMARY KEY (" + tabla.getClavePK() + ")\n");
//      }
//      // termina la tabla con parentesis y dos saltos de linea
//      out.write(");\n\n");
//    }
//    out.close();
//  }
//
//  /***
//   * @param un String correspondiente a la clave foranea.
//   * @return un String correspondiente a la declaracion de una
//   * clave foranea en el scrip sql.
//   */
//  public static String processIDRefs(String idRefName) {
//    TablaSQL tabla = listaTablas.get(idRefName);
//    String claveFK;
//
//    claveFK = "\tFOREIGN KEY (" + idRefName + "_FK) "
//            + "REFERENCES " + idRefName + "(" + tabla.getClavePK()
//            + "),\n";
//
//    return claveFK;
//  }
  
}
